home *** CD-ROM | disk | FTP | other *** search
/ All for Cell Phones: Sony Ericsson / Sony-Ericsson 2004.iso / Java / Calcul / Calc.jar / MyCanvas.class (.txt) < prev   
Encoding:
Java Class File  |  2002-02-09  |  8.5 KB  |  360 lines

  1. import javax.microedition.lcdui.Canvas;
  2. import javax.microedition.lcdui.Command;
  3. import javax.microedition.lcdui.CommandListener;
  4. import javax.microedition.lcdui.Displayable;
  5. import javax.microedition.lcdui.Font;
  6. import javax.microedition.lcdui.Graphics;
  7.  
  8. class MyCanvas extends Canvas implements CommandListener {
  9.    // $FF: renamed from: g2 javax.microedition.lcdui.Graphics
  10.    private Graphics field_0;
  11.    static int gLT = 20;
  12.    static int gRT = 24;
  13.    static int gCT = 17;
  14.    // $FF: renamed from: wY int
  15.    private int field_1 = ((Canvas)this).getHeight();
  16.    // $FF: renamed from: wX int
  17.    private int field_2 = ((Canvas)this).getWidth();
  18.    private Command cmExit = new Command("Exit", 1, 1);
  19.    private Command cmInfo = new Command("Info", 1, 0);
  20.    private Calc midlet;
  21.    private String txt = "Calc v09";
  22.    // $FF: renamed from: mf MathFunc
  23.    private MathFunc field_3 = new MathFunc();
  24.    private String stERR = ".ERR.";
  25.    private String stOut = "0";
  26.    private byte bDot = 0;
  27.    // $FF: renamed from: L1 long
  28.    private long field_4;
  29.    // $FF: renamed from: LM long
  30.    private long field_5;
  31.    private byte bOpr;
  32.    private long _c180 = 3019898880L;
  33.    private long _c10 = 167772160L;
  34.    private long _c1 = 16777216L;
  35.    static byte MAX_KEYS = 2;
  36.    static byte MAX_LEN = 12;
  37.    static byte C_DOT = 20;
  38.    static byte C_EQU = 21;
  39.    static byte C_X2 = 30;
  40.    static byte C_SQRT = 31;
  41.    static byte C_FACT = 32;
  42.    static byte C_XY = 33;
  43.    static byte C_LOG = 34;
  44.    static byte C_LN = 35;
  45.    static byte C_SIN = 36;
  46.    static byte C_COS = 37;
  47.    static byte C_TAN = 38;
  48.    static byte C_ASN = 39;
  49.    static byte C_ACS = 40;
  50.    static byte C_ATN = 41;
  51.    static byte C_NEG = 42;
  52.    static byte C_ADD = 43;
  53.    static byte C_SUB = 44;
  54.    static byte C_MUL = 45;
  55.    static byte C_DIV = 46;
  56.    static byte C_PCT = 47;
  57.    static byte C_MPL = 48;
  58.    static byte C_MM = 49;
  59.    static byte C_MMC = 50;
  60.    static byte C_MMR = 51;
  61.    static byte C_ALOG = 52;
  62.    static byte C_PI = 53;
  63.    static byte C_INV = 54;
  64.    static byte C_EXP = 55;
  65.    static byte[][] cdKeys;
  66.    static String[][] stKeys;
  67.    private byte keyMode = 0;
  68.    private Font fDig = Font.getFont(0, 1, 16);
  69.    private Font fKey = Font.getFont(64, 0, 8);
  70.  
  71.    public MyCanvas(Calc var1) {
  72.       this.midlet = var1;
  73.       ((Displayable)this).addCommand(this.cmInfo);
  74.       ((Displayable)this).addCommand(this.cmExit);
  75.       ((Displayable)this).setCommandListener(this);
  76.       this.field_4 = MathFunc.toFP(0L);
  77.       this.field_5 = 0L;
  78.       this.bOpr = 0;
  79.    }
  80.  
  81.    public void dOut(int var1) {
  82.       int var3 = this.stOut.indexOf(46);
  83.       String var2;
  84.       if (var3 >= 0) {
  85.          var2 = this.stOut;
  86.       } else {
  87.          var2 = this.stOut + ".";
  88.       }
  89.  
  90.       int var4 = var2.length();
  91.       boolean var5;
  92.       if (var2.charAt(0) != '-') {
  93.          var5 = false;
  94.       } else {
  95.          var5 = true;
  96.          --var4;
  97.          --var3;
  98.       }
  99.  
  100.       if (var4 > MAX_LEN + 1) {
  101.          if (var3 >= 0 && var3 <= MAX_LEN + 1) {
  102.             var3 = MAX_LEN + 1;
  103.             if (var5) {
  104.                ++var3;
  105.             }
  106.  
  107.             var2 = var2.substring(0, var3);
  108.          } else {
  109.             var2 = this.stERR;
  110.          }
  111.       }
  112.  
  113.       if (var1 >= 1) {
  114.          this.field_0.setColor(255, 255, 255);
  115.          this.field_0.fillRect(1, 1, this.field_2 - 2, 22);
  116.          this.field_0.setColor(0, 0, 0);
  117.          this.field_0.drawString(var2, this.field_2 - 3, 3, gRT);
  118.          if (var1 > 1) {
  119.             this.bDot = -1;
  120.          }
  121.       }
  122.  
  123.    }
  124.  
  125.    public void paint(Graphics var1) {
  126.       this.field_0 = var1;
  127.       var1.setColor(0, 0, 0);
  128.       var1.drawRect(0, 0, this.field_2 - 1, 24);
  129.       var1.setFont(this.fKey);
  130.       int var5 = 26;
  131.       int var6 = 0;
  132.  
  133.       for(int var2 = 1; var2 <= 4; ++var2) {
  134.          int var4 = 0;
  135.  
  136.          for(int var3 = 1; var3 <= 3; ++var3) {
  137.             var1.setColor(255, 255, 255);
  138.             var1.fillRect(var4, var5, 30, 11);
  139.             var1.setColor(0, 0, 0);
  140.             var1.drawString(stKeys[this.keyMode][var6++], var4 + 16, var5 + 2, gCT);
  141.             var1.drawRect(var4, var5, 30, 11);
  142.             var4 += 32;
  143.          }
  144.  
  145.          var5 += 13;
  146.       }
  147.  
  148.       var1.setFont(this.fDig);
  149.       this.dOut(1);
  150.    }
  151.  
  152.    public void keyPressed(int var1) {
  153.       byte var7 = 0;
  154.       if (var1 == -60) {
  155.          var7 = C_EQU;
  156.       }
  157.  
  158.       if (var1 <= 0 && var7 == 0) {
  159.          switch (var1) {
  160.             case -12:
  161.                if (this.keyMode != 0) {
  162.                   this.keyMode = 0;
  163.                   ((Canvas)this).repaint();
  164.                   return;
  165.                }
  166.  
  167.                if (this.bDot < 0) {
  168.                   this.stOut = "0";
  169.                   this.dOut(2);
  170.                } else {
  171.                   byte var8 = (byte)this.stOut.length();
  172.                   if (var8 >= 3 && this.stOut.charAt(var8 - 2) == '.') {
  173.                      this.bDot = 0;
  174.                      --var8;
  175.                   }
  176.  
  177.                   if (var8 != 1 && (var8 != 2 || this.stOut.charAt(0) != '-')) {
  178.                      this.stOut = this.stOut.substring(0, var8 - 1);
  179.                   } else {
  180.                      this.stOut = "0";
  181.                   }
  182.  
  183.                   this.dOut(1);
  184.                }
  185.  
  186.                return;
  187.             case -11:
  188.                if (this.keyMode == MAX_KEYS) {
  189.                   this.keyMode = 0;
  190.                } else {
  191.                   ++this.keyMode;
  192.                }
  193.                break;
  194.             case -1:
  195.                if (this.keyMode == 0) {
  196.                   this.keyMode = MAX_KEYS;
  197.                } else {
  198.                   --this.keyMode;
  199.                }
  200.                break;
  201.             default:
  202.                return;
  203.          }
  204.  
  205.          ((Canvas)this).repaint();
  206.       } else {
  207.          byte var3;
  208.          if (var7 == 0) {
  209.             int var2;
  210.             if (var1 >= 49 & var1 <= 57) {
  211.                var2 = var1 - 49;
  212.             } else if (var1 == 48) {
  213.                var2 = 10;
  214.             } else if (var1 == 42) {
  215.                var2 = 9;
  216.             } else {
  217.                var2 = 11;
  218.             }
  219.  
  220.             var3 = cdKeys[this.keyMode][var2];
  221.          } else {
  222.             var3 = var7;
  223.          }
  224.  
  225.          if (this.keyMode != 0) {
  226.             this.keyMode = 0;
  227.             ((Canvas)this).repaint();
  228.          }
  229.  
  230.          MathFunc.ERROR = 0;
  231.          if (var3 >= 0 && var3 <= 9) {
  232.             if (this.bDot < 0) {
  233.                this.stOut = "";
  234.                this.bDot = 0;
  235.             }
  236.  
  237.             byte var4 = (byte)this.stOut.length();
  238.             if (var4 < MAX_LEN || var4 == MAX_LEN && this.stOut.charAt(0) == '-') {
  239.                if (this.stOut == "0" && this.bDot == 0) {
  240.                   if (var3 == 0) {
  241.                      return;
  242.                   }
  243.  
  244.                   this.stOut = "" + var3;
  245.                } else if (this.bDot == 1) {
  246.                   this.stOut = this.stOut + "." + var3;
  247.                   this.bDot = 2;
  248.                } else {
  249.                   this.stOut = this.stOut + var3;
  250.                }
  251.  
  252.                this.dOut(1);
  253.             }
  254.  
  255.          } else if (var3 == C_DOT) {
  256.             if (this.bDot == 0) {
  257.                this.bDot = 1;
  258.             } else if (this.bDot < 0) {
  259.                this.stOut = "0";
  260.                this.bDot = 1;
  261.                this.dOut(1);
  262.             }
  263.  
  264.          } else if (var3 == C_NEG) {
  265.             if (this.stOut.charAt(0) != '-') {
  266.                this.stOut = "-" + this.stOut;
  267.             } else {
  268.                this.stOut = this.stOut.substring(1, this.stOut.length());
  269.             }
  270.  
  271.             this.dOut(1);
  272.          } else {
  273.             long var5 = MathFunc.toFP(this.stOut);
  274.             if (var3 == C_SIN) {
  275.                var5 = MathFunc.sin(MathFunc.mul(MathFunc.PI, MathFunc.div(var5, this._c180)));
  276.             } else if (var3 == C_COS) {
  277.                var5 = MathFunc.cos(MathFunc.mul(MathFunc.PI, MathFunc.div(var5, this._c180)));
  278.             } else if (var3 == C_TAN) {
  279.                var5 = MathFunc.tan(MathFunc.mul(MathFunc.PI, MathFunc.div(var5, this._c180)));
  280.             } else if (var3 == C_LOG) {
  281.                var5 = MathFunc.div(MathFunc.log(var5), MathFunc.log(this._c10));
  282.             } else if (var3 == C_ALOG) {
  283.                var5 = MathFunc.pow(this._c10, var5);
  284.             } else if (var3 == C_X2) {
  285.                var5 = MathFunc.mul(var5, var5);
  286.             } else if (var3 == C_SQRT) {
  287.                var5 = MathFunc.sqrt(var5);
  288.             } else if (var3 == C_PI) {
  289.                var5 = MathFunc.PI;
  290.             } else if (var3 == C_FACT) {
  291.                var5 = MathFunc.fact(var5);
  292.             } else if (var3 == C_INV) {
  293.                var5 = MathFunc.div(this._c1, var5);
  294.             } else if (var3 == C_ASN) {
  295.                var5 = MathFunc.mul(this._c180, MathFunc.div(MathFunc.asin(var5), MathFunc.PI));
  296.             } else if (var3 == C_ACS) {
  297.                var5 = MathFunc.mul(this._c180, MathFunc.div(MathFunc.acos(var5), MathFunc.PI));
  298.             } else if (var3 == C_ATN) {
  299.                var5 = MathFunc.mul(this._c180, MathFunc.div(MathFunc.atan(var5), MathFunc.PI));
  300.             } else if (var3 == C_LN) {
  301.                var5 = MathFunc.log(var5);
  302.             } else if (var3 == C_EXP) {
  303.                var5 = MathFunc.exp(var5);
  304.             } else if (var3 == C_MM) {
  305.                this.field_5 = var5;
  306.             } else if (var3 == C_MPL) {
  307.                this.field_5 += var5;
  308.             } else if (var3 == C_MMC) {
  309.                this.field_5 = 0L;
  310.             } else if (var3 == C_MMR) {
  311.                var5 = this.field_5;
  312.             } else {
  313.                if (this.bOpr != 0) {
  314.                   if (this.bOpr == C_ADD) {
  315.                      this.field_4 += var5;
  316.                   } else if (this.bOpr == C_SUB) {
  317.                      this.field_4 -= var5;
  318.                   } else if (this.bOpr == C_MUL) {
  319.                      this.field_4 = MathFunc.mul(this.field_4, var5);
  320.                   } else if (this.bOpr == C_DIV) {
  321.                      this.field_4 = MathFunc.div(this.field_4, var5);
  322.                   } else if (this.bOpr == C_XY) {
  323.                      this.field_4 = MathFunc.pow(this.field_4, var5);
  324.                   } else {
  325.                      this.field_4 = var5;
  326.                   }
  327.                } else {
  328.                   this.field_4 = var5;
  329.                }
  330.  
  331.                this.bOpr = var3;
  332.                var5 = this.field_4;
  333.             }
  334.  
  335.             if (MathFunc.ERROR > 0) {
  336.                this.stOut = this.stERR;
  337.             } else {
  338.                this.stOut = MathFunc.toString(var5, 5);
  339.             }
  340.  
  341.             this.dOut(2);
  342.          }
  343.       }
  344.    }
  345.  
  346.    public void commandAction(Command var1, Displayable var2) {
  347.       if (var1 == this.cmExit) {
  348.          this.midlet.exitMIDlet();
  349.       } else if (var1 == this.cmInfo) {
  350.          this.midlet.showInfo();
  351.       }
  352.  
  353.    }
  354.  
  355.    static {
  356.       cdKeys = new byte[][]{{1, 2, 3, 4, 5, 6, 7, 8, 9, C_DOT, 0, C_NEG}, {C_SUB, C_MMC, C_X2, C_ADD, C_MMR, C_SQRT, C_DIV, C_MPL, C_XY, C_MUL, C_MM, C_EQU}, {C_LOG, C_ALOG, C_FACT, C_LN, C_EXP, C_PI, C_SIN, C_COS, C_TAN, C_ASN, C_ACS, C_ATN}};
  357.       stKeys = new String[][]{{"1", "2", "3", "4", "5", "6", "7", "8", "9", ".", "0", "+/-"}, {"-", "MC", "x^2", "+", "MR", "sqrt", "/", "M+", "x^y", "*", "M", "="}, {"log", "alog", "n!", "ln", "exp", "PI", "sin", "cos", "tan", "asn", "acs", "atn"}};
  358.    }
  359. }
  360.